﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using LogicaNegocio;
using Entidades;

namespace PresentacionEscritorio
{
    public partial class frmRegistrarLlegadaTurno : Form, IFormsPadre_Hijo
    {
        private frmGestionTurnos2 myFormPadre;
        public long IdTurnoSeleccionado { get; set; }
        private Turno miTurno;

        private bool cobrado;

        public frmRegistrarLlegadaTurno()
        {
            InitializeComponent();
        }

        private void frmRegistrarLlegadaTurno_Load(object sender, EventArgs e)
        {

            myFormPadre.setFormHijo(this);

            cobrado = false;
            obtenerTurno();
            //cargar txt con nombre paciente
            lblNombrePaciente.Text = miTurno.NombrePaciente;
        }

        private void obtenerTurno()
        {
            GestorAgendaTurnos gat = new GestorAgendaTurnos();
            miTurno = GestorAgendaTurnos.obtenerTurnoPorID(IdTurnoSeleccionado);
            miTurno = GestorAgendaTurnos.obtenerPacienteTurno(miTurno);
        }

        private void lnkCobrar_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            txtHoraLlegada.Text = DateTime.Now.ToShortTimeString();
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            if (validarDatos())
            {
                //validamos si fuimos a registrar cobro
                if (!cobrado)
                {
                    miTurno.IdEstadoTurno = 3; //asistido NO cobrado
                }
                else
                {
                    miTurno.IdEstadoTurno = 4; //asistido Y cobrado
                }

                miTurno.HoraRealLlegada = TimeSpan.Parse(txtHoraLlegada.Text);
                //actualizamos el turno en la bd
                bool res = GestorAgendaTurnos.registrarLlegadaTurno(IdTurnoSeleccionado, miTurno);
                if (res)
                {
                    MessageBox.Show("Se registró la llegada al turno");
                    myFormPadre.estadoTurnoSeleccionado = miTurno.IdEstadoTurno;
                    myFormPadre.actualizarEstadoTurno();
                    this.Dispose();
                }
                else
                {
                    MessageBox.Show("No se pudo registrar la llegada al turno");
                }

            }

            this.Dispose();
        }

        private bool validarDatos()
        {
            bool res = true;
            TimeSpan horaL;
            res = TimeSpan.TryParse(txtHoraLlegada.Text, out horaL);
            return res;
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }

        

        public void setFormPadre(Form formPadre)
        {
            myFormPadre = (frmGestionTurnos2)formPadre;
        }

        public void setFormHijo(Form formHijo)
        {
            throw new NotImplementedException();
        }
    }
}
